package gui.estudiante;

import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Rectangle;
import java.text.ParseException;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFormattedTextField;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;
import javax.swing.text.MaskFormatter;

import modelo.ModeloEstudiante;
import utils.Utilidad;
import entidad.Estudiante;

public class DialogoModificarEstudiante extends JDialog {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JPanel panelEstudiantes = null;
	private JLabel jLabel = null;
	private JLabel lblNombre = null;
	private JTextField txtNombre = null;
	private JLabel lblApellido = null;
	private JTextField txtApellido = null;
	private JLabel lblSexo = null;
	private JComboBox cmbSexo = null;
	private JLabel lblDireccion = null;
	private JTextArea txtDireccion = null;
	private JLabel lblTelefono = null;
	private JTextField txtTelefono = null;
	private JLabel lblNombreTutor = null;
	private JTextField txtNombreTutor = null;
	private JLabel lblApellidoTutor = null;
	private JTextField txtApellidoTutor = null;
	private JLabel lblTelefonoTutor = null;
	private JTextField txtTelefonoTutor = null;
	private JButton btnAceptar = null;
	private JButton btnCancelar = null;
	private ModeloEstudiante modeloEstudiante = null;
	private Utilidad utilidad = null; // @jve:decl-index=0:
	private int idModificar;
	private JRadioButton rbtnActivo = null;
	private JRadioButton rbtnInactivo = null;
	private JLabel lblEstatus = null;
	private JLabel lblEmail = null;
	private JTextField txtEmail = null;
	private JPanel panelTutos = null;

	/**
	 * @param owner
	 */
	public DialogoModificarEstudiante(Frame owner) {
		super(owner);
		this.setModal(true);
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setResizable(false);
		this.setLocationRelativeTo(null);
		this.setSize(445, 559);
		this.setTitle("Modificar Estudiantes");
		this.setContentPane(getJContentPane());
		this.modeloEstudiante = ModeloEstudiante.getInstancia();
		utilidad = Utilidad.getInstancia();
		this.setLocationRelativeTo(null);
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(getPanelEstudiantes(), null);
		}
		return jContentPane;
	}

	public int getIdModificar() {
		return idModificar;
	}

	public void setIdModificar(int idModificar) {
		this.idModificar = idModificar;
	}

	public void llenarCampos() {
		Estudiante estudiante = (Estudiante) modeloEstudiante
				.getEntidadPorId(getIdModificar());
		txtNombre.setText(estudiante.getNombre());
		txtApellido.setText(estudiante.getApellido());
		cmbSexo.setSelectedItem(estudiante.getSexo());
		txtDireccion.setText(estudiante.getDireccion());
		txtTelefono.setText(estudiante.getTelefono());
		txtNombreTutor.setText(estudiante.getNombreTutor());
		txtApellidoTutor.setText(estudiante.getApellidoTutor());
		txtTelefonoTutor.setText(estudiante.getTelefonoTutor());
		txtEmail.setText(estudiante.getEmail());
		if (estudiante.getEstatus().equalsIgnoreCase("ACTIVO")) {
			rbtnActivo.setSelected(true);

		} else {
			rbtnInactivo.setSelected(true);
		}

	}

	/**
	 * This method initializes panelEstudiantes
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getPanelEstudiantes() {
		if (panelEstudiantes == null) {
			lblEmail = new JLabel();
			lblEmail.setBounds(new Rectangle(30, 435, 85, 18));
			lblEmail.setText("Email:");
			lblEstatus = new JLabel();
			lblEstatus.setBounds(new Rectangle(29, 405, 87, 17));
			lblEstatus.setText("* Estatus:");
			lblTelefonoTutor = new JLabel();
			lblTelefonoTutor.setText("* Telefono:");
			lblTelefonoTutor.setBounds(new Rectangle(9, 92, 87, 20));
			lblApellidoTutor = new JLabel();
			lblApellidoTutor.setText("* Apellido:");
			lblApellidoTutor.setBounds(new Rectangle(10, 60, 87, 20));
			lblNombreTutor = new JLabel();
			lblNombreTutor.setText("* Nombre:");
			lblNombreTutor.setBounds(new Rectangle(10, 29, 87, 20));
			lblTelefono = new JLabel();
			lblTelefono.setBounds(new Rectangle(27, 239, 87, 20));
			lblTelefono.setText("* Telefono:");
			lblDireccion = new JLabel();
			lblDireccion.setBounds(new Rectangle(27, 140, 87, 20));
			lblDireccion.setText("* Direccion:");
			lblSexo = new JLabel();
			lblSexo.setBounds(new Rectangle(27, 105, 87, 20));
			lblSexo.setText("* Sexo:");
			lblApellido = new JLabel();
			lblApellido.setBounds(new Rectangle(27, 72, 87, 20));
			lblApellido.setText("* Apellidos:");
			lblNombre = new JLabel();
			lblNombre.setBounds(new Rectangle(27, 40, 87, 20));
			lblNombre.setText("* Nombres:");
			jLabel = new JLabel();
			jLabel.setText("");
			jLabel.setBounds(new Rectangle(0, 0, 0, 0));
			panelEstudiantes = new JPanel();
			panelEstudiantes.setLayout(null);
			panelEstudiantes.setBounds(new Rectangle(3, 5, 420, 518));
			panelEstudiantes.setBorder(BorderFactory.createTitledBorder(
					BorderFactory.createLineBorder(Color.gray, 1),
					"Datos del Estudiante", TitledBorder.LEFT,
					TitledBorder.DEFAULT_POSITION, new Font("Dialog",
							Font.BOLD, 12), new Color(51, 51, 51)));
			panelEstudiantes.add(jLabel, null);
			panelEstudiantes.add(lblNombre, null);
			panelEstudiantes.add(getTxtNombre(), null);
			panelEstudiantes.add(lblApellido, null);
			panelEstudiantes.add(getTxtApellido(), null);
			panelEstudiantes.add(lblSexo, null);
			panelEstudiantes.add(getCmbSexo(), null);
			panelEstudiantes.add(lblDireccion, null);
			panelEstudiantes.add(getTxtDireccion(), null);
			panelEstudiantes.add(lblTelefono, null);
			panelEstudiantes.add(getTxtTelefono(), null);
			panelEstudiantes.add(getBtnAceptar(), null);
			panelEstudiantes.add(getBtnCancelar(), null);
			panelEstudiantes.add(getRbtnActivo(), null);
			panelEstudiantes.add(getRbtnInactivo(), null);
			panelEstudiantes.add(lblEstatus, null);
			panelEstudiantes.add(lblEmail, null);
			panelEstudiantes.add(getTxtEmail(), null);
			panelEstudiantes.add(getPanelTutos(), null);
		}
		return panelEstudiantes;
	}

	/**
	 * This method initializes txtNombre
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getTxtNombre() {
		if (txtNombre == null) {
			txtNombre = new JTextField();
			txtNombre.setBounds(new Rectangle(126, 41, 249, 19));
		}
		return txtNombre;
	}

	/**
	 * This method initializes txtApellido
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getTxtApellido() {
		if (txtApellido == null) {
			txtApellido = new JTextField();
			txtApellido.setBounds(new Rectangle(126, 74, 249, 19));
		}
		return txtApellido;
	}

	/**
	 * This method initializes cmbSexo
	 * 
	 * @return javax.swing.JComboBox
	 */
	private JComboBox getCmbSexo() {
		if (cmbSexo == null) {
			cmbSexo = new JComboBox();
			cmbSexo.setBounds(new Rectangle(126, 104, 185, 20));
			cmbSexo.addItem("Maculino");
			cmbSexo.addItem("Femenino");

		}
		return cmbSexo;
	}

	/**
	 * This method initializes txtDireccion
	 * 
	 * @return javax.swing.JTextArea
	 */
	private JTextArea getTxtDireccion() {
		if (txtDireccion == null) {
			txtDireccion = new JTextArea();
			txtDireccion.setBounds(new Rectangle(126, 144, 249, 79));
		}
		return txtDireccion;
	}

	/**
	 * This method initializes txtTelefono
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getTxtTelefono() {
		if (txtTelefono == null) {
			MaskFormatter mascara;
			try {
				mascara = new MaskFormatter("###-###-####");
				txtTelefono = new JFormattedTextField(mascara);
			} catch (ParseException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

			txtTelefono.setBounds(new Rectangle(126, 238, 185, 20));

		}
		return txtTelefono;
	}

	/**
	 * This method initializes txtNombreTutor
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getTxtNombreTutor() {
		if (txtNombreTutor == null) {
			txtNombreTutor = new JTextField();
			txtNombreTutor.setBounds(new Rectangle(108, 30, 249, 19));
		}
		return txtNombreTutor;
	}

	/**
	 * This method initializes txtApellidoTutor
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getTxtApellidoTutor() {
		if (txtApellidoTutor == null) {
			txtApellidoTutor = new JTextField();
			txtApellidoTutor.setBounds(new Rectangle(108, 61, 249, 19));
		}
		return txtApellidoTutor;
	}

	/**
	 * This method initializes txtTelefonoTutor
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getTxtTelefonoTutor() {
		if (txtTelefonoTutor == null) {
			MaskFormatter mascara;
			try {
				mascara = new MaskFormatter("###-###-####");
				txtTelefonoTutor = new JFormattedTextField(mascara);

				txtTelefonoTutor.setBounds(new Rectangle(109, 92, 185, 20));
			} catch (ParseException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return txtTelefonoTutor;
	}

	/**
	 * This method initializes btnAceptar
	 * 
	 * @return javax.swing.JButton
	 */
	private JButton getBtnAceptar() {
		if (btnAceptar == null) {
			btnAceptar = new JButton();
			btnAceptar.setBounds(new Rectangle(102, 480, 103, 25));
			btnAceptar.setText("Aceptar");
			btnAceptar.setIcon(new ImageIcon("./lib/images/add.png"));
			btnAceptar.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					if (utilidad.validar(txtNombre, txtApellido, txtDireccion,
							txtTelefono, txtNombreTutor, txtApellidoTutor,
							txtTelefonoTutor) == false
							|| rbtnActivo.isSelected() == false
							&& rbtnInactivo.isSelected() == false) {
						JOptionPane.showMessageDialog(null,
								"Faltan Campos por llenar", "Atencion",
								JOptionPane.INFORMATION_MESSAGE);
					} else {
						if (txtEmail.getText().trim().equals("")) {

							int opcion = JOptionPane
									.showConfirmDialog(
											null,
											"Esta seguro que desea modificar el estudiante ?",
											"Confirmando",
											JOptionPane.YES_NO_OPTION);
							if (opcion == JOptionPane.YES_OPTION) {
								String estatus = rbtnActivo.isSelected() ? "ACTIVO"
										: "INACTIVO";
								JOptionPane.showMessageDialog(null,
										"Estudiante Modificado con Exito",
										"Atencion",
										JOptionPane.INFORMATION_MESSAGE);
								Estudiante estudiante = new Estudiante(0,
										txtNombre.getText(), txtApellido
												.getText(), cmbSexo
												.getSelectedItem().toString(),
										txtDireccion.getText(), txtTelefono
												.getText(), txtNombreTutor
												.getText(), txtApellidoTutor
												.getText(), txtTelefonoTutor
												.getText(), estatus);
								estudiante = (Estudiante) utilidad
										.convertirAMayuscula(estudiante);
								modeloEstudiante.modificar(estudiante,
										getIdModificar());
							}
						} else {
							int opcion = JOptionPane
									.showConfirmDialog(
											null,
											"Esta seguro que desea modificar el estudiante ?",
											"Confirmando",
											JOptionPane.YES_NO_OPTION);
							if (opcion == JOptionPane.YES_OPTION) {
								String estatus = rbtnActivo.isSelected() ? "ACTIVO"
										: "INACTIVO";
								JOptionPane.showMessageDialog(null,
										"Estudiante Modificado con Exito",
										"Atencion",
										JOptionPane.INFORMATION_MESSAGE);
								Estudiante estudiante = new Estudiante(0,
										txtNombre.getText(), txtApellido
												.getText(), cmbSexo
												.getSelectedItem().toString(),
										txtDireccion.getText(), txtTelefono
												.getText(), txtNombreTutor
												.getText(), txtApellidoTutor
												.getText(), txtTelefonoTutor
												.getText(), estatus, txtEmail
												.getText());
								estudiante = (Estudiante) utilidad
										.convertirAMayuscula(estudiante);
								modeloEstudiante.modificar(estudiante,
										getIdModificar());
							}
						}

						DialogoModificarEstudiante.this.dispose();
					}
				}
			});

		}
		return btnAceptar;
	}

	/**
	 * This method initializes btnCancelar
	 * 
	 * @return javax.swing.JButton
	 */

	private JButton getBtnCancelar() {
		if (btnCancelar == null) {
			btnCancelar = new JButton();
			btnCancelar.setBounds(new Rectangle(237, 481, 103, 23));
			btnCancelar.setText("Salir");
			btnCancelar.setIcon(new ImageIcon("./lib/images/salir.png"));

			btnCancelar.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					if (JOptionPane.showConfirmDialog(null,
							"Confirma que desea salir?", "Atencion",
							JOptionPane.OK_CANCEL_OPTION) == 0) {
						DialogoModificarEstudiante.this.dispose();
					}
				}
			});
		}
		return btnCancelar;
	}

	/**
	 * This method initializes rbtnActivo
	 * 
	 * @return javax.swing.JRadioButton
	 */
	private JRadioButton getRbtnActivo() {
		if (rbtnActivo == null) {
			rbtnActivo = new JRadioButton();
			rbtnActivo.setBounds(new Rectangle(126, 402, 61, 24));
			rbtnActivo.setText("Activo");
		}
		return rbtnActivo;
	}

	/**
	 * This method initializes rbtnInactivo
	 * 
	 * @return javax.swing.JRadioButton
	 */
	private JRadioButton getRbtnInactivo() {
		if (rbtnInactivo == null) {
			rbtnInactivo = new JRadioButton();
			rbtnInactivo.setBounds(new Rectangle(201, 402, 78, 24));
			rbtnInactivo.setText("Inactivo");
		}
		return rbtnInactivo;
	}

	/**
	 * This method initializes txtEmail
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getTxtEmail() {
		if (txtEmail == null) {
			txtEmail = new JTextField();
			txtEmail.setBounds(new Rectangle(129, 435, 249, 19));
		}
		return txtEmail;
	}

	/**
	 * This method initializes panelTutos
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getPanelTutos() {
		if (panelTutos == null) {
			panelTutos = new JPanel();
			panelTutos.setLayout(null);
			panelTutos.setBounds(new Rectangle(20, 276, 385, 123));
			panelTutos.setBorder(BorderFactory.createTitledBorder(BorderFactory
					.createLineBorder(Color.gray, 1), "Datos Padre o Tutor",
					TitledBorder.DEFAULT_JUSTIFICATION,
					TitledBorder.DEFAULT_POSITION, new Font("Dialog",
							Font.BOLD, 12), new Color(51, 51, 51)));
			panelTutos.add(getTxtNombreTutor(), null);
			panelTutos.add(getTxtApellidoTutor(), null);
			panelTutos.add(getTxtTelefonoTutor(), null);
			panelTutos.add(lblNombreTutor, null);
			panelTutos.add(lblApellidoTutor, null);
			panelTutos.add(lblTelefonoTutor, null);
		}
		return panelTutos;
	}
} // @jve:decl-index=0:visual-constraint="10,10"
